1.4.3 テストの分析と設計
from 1.4.0 基本的なテストプロセス
テストの分析と設計
抽象度の高いテストの目的を、具体的なテスト条件やテスト設計に変換する
テストベースのレビュー
例えば
要件
ソフトウェア完全性レベル(リスクレベル)
リスク解析レポート
アーキテクチャ
設計
インターフェース仕様
テストのスコープにより様々なものがある
テストベースには会議の議事録、ホワイトボードのメモ、slackとかも含まれる
テストベースやテスト対象のテスト容易性を評価
例えばUIUXの評価
評価を可能にする基準、「ものさし」が用意できるか。できなければ自ら用意できるか
アルゴリズムや中間データ
UIでの確認が難しい
結果を確認するためのメカニズムを組み込む
テストツールの利用を見越した設計
テストの効果や効率という意味でも重要
テストアイテム、仕様、動作、構造分析に基づいて、テスト条件を識別し、優先順位をつける
テストで検証すべき条件、要件を明らかにする
テスト条件の識別
スケジュール面の制約
技術者の資格条件
テストアイテム自身の動作
ソフトウェア構造の分析
条件が明らかになったら目的に沿うようにテスト条件の優先順位をつける
高度なテストケースを設計し、優先順位づけ
テスト計画で示したテストアプローチやテスト設計方針に基づいて、テスト条件を大項目から中項目に変換していく
テスト条件(要件)を網羅するようにテスト技法を用いて設計する
高度なテストケース = 抽象度の高いテストケース
網羅性
2つのカバレッジを満たすように…
要件や仕様に対するカバレッジ
コードカバレッジ
テスト設計の視点の例
ブラックボックス
ユーザー指向
利用する視点
要件指向
要件の妥当性を見る
ホワイトボックス
フォールト指向
欠陥を見つけるため
設計指向
設計通りにテスト対象が動作するか
テストアプローチを基にテストケースごとに優先順位を割り振る
テスト条件やテストケースをサポートする上で必要なテストデータを識別する
テストアイテム間の機能的な連携はどのようなものか
テストレベルごとにテストデータは異なるのか
テスト環境を設計し、必要となるインフラストラクチャやツールを識別する
テスト実施に必要な環境
物理的側面
開発環境とテスト環境を分離するか
OS、ミドルウェアのバージョン、バンドルするアプリの種類
プロトタイプ→試作機→量産試作機→実機
論理的側面
ミドルウェア、ファームウェアの可変パラメータのデフォルト値
テーブル設計の組み合わせ
テストドライバやテストツールでの実施
コスパの問題
テストの有効性を損なわないような代替項目の検討
テストの必要性の有無の検討
テストベースとテストケースの間で、双方向のトレーサビリティ
トレーサビリティ = 追跡可能性
確保できていれば、テストベースに変更あってもテストケースのどこを直せばいいかがわかる
トレーサビリティの確保に使えるもの
トレーサビリティマトリックスの作成
要求管理ツール
ALM(Application Lifecycle Management)ツール